<?php

namespace Xibeicity\Message\Contracts;

interface MessageInterface
{
    /**
     * 发送消息
     *
     * @param array $to 接收者
     * @param string $content 消息内容
     * @param array $options 额外选项
     * @return array 返回发送结果，包含 success 和 message_id
     */
    public function send(array $to, string $content, array $options = []): array;

    /**
     * 使用模板发送消息
     *
     * @param array $to 接收者
     * @param string $templateCode 模板编码
     * @param array $templateParams 模板参数
     * @param array $options 额外选项
     * @return array 返回发送结果，包含 success 和 message_id
     */
    public function sendTemplate(array $to, string $templateCode, array $templateParams = [], array $options = []): array;

    /**
     * 批量发送消息
     *
     * @param array $messages 消息列表，每个元素包含 to、content、options
     * @return array 返回每条消息的发送结果
     */
    public function batchSend(array $messages): array;

    /**
     * 获取发送状态
     *
     * @param string $messageId 消息ID
     * @return array 返回消息状态，包含 status、error 等信息
     */
    public function getStatus(string $messageId = null): array;

    /**
     * 获取错误信息
     *
     * @return string|null
     */
    public function getError(): ?string;

    /**
     * 获取驱动配置信息
     *
     * @return array
     */
    public function getConfig(): array;
}